package com.heng.test.BigDecimal;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.DecimalFormat;

public class Demo {
    public static void main(String[] args) {

        // 1. 初始化的问题，最好使用字符串,初始化浮点型，会出现精度丢失
//        BigDecimal bigDecimal1 = new BigDecimal(0.1);
        BigDecimal bigDecimal1 = new BigDecimal(1.22F);
        System.out.println(bigDecimal1);

        BigDecimal bigDecimal2 = new BigDecimal("777777777888887770.188887777888887");// 或者使用BigDecimal.valueOf()
        BigDecimal bigDecimal = BigDecimal.valueOf(7777777778888877700.188887777888887);
        System.out.println(bigDecimal2.toPlainString());
        System.out.println(bigDecimal.toPlainString());// 是在double转字符串的时候出现的丢精度，


        System.out.println(String.valueOf(bigDecimal));
        System.out.println(Double.toString(777777777888887770.188887777888887) + " -丢精度");

        // 3.除法,除不尽会报错
        BigDecimal bigDecimal4 = new BigDecimal("1");
        BigDecimal bigDecimal3 = new BigDecimal("3");
        System.out.println(bigDecimal4.divide(bigDecimal3, 2, RoundingMode.UP));

        // 4.equals方法不仅比较值是否相等，还会比较精度是否相等
        BigDecimal bigDecimal5 = new BigDecimal("0.1");
        BigDecimal bigDecimal6 = new BigDecimal("0.10");
        System.out.println(bigDecimal6.equals(bigDecimal5));
        System.out.println(bigDecimal6.compareTo(bigDecimal5));

    }
}
